export function formatToMenu(list) {
  if (!Array.isArray(list) || !list.length) {
    return [];
  }
  const map = {};
  const roots = [];

  // 首先，将列表中的每个对象放入一个映射中，以便我们可以根据ID快速查找它们。
  list.forEach(item => {
    map[item.id] = { ...item, children: [] };
  });

  // 遍历列表中的每个对象，并根据其parentId将其添加到其父对象的children数组中。
  // 如果一个对象没有parentId（即它是根节点），则将其添加到根节点数组中。
  list.forEach(item => {
    const { id, parentId } = item;
    if (parentId === null || !parentId) {
      roots.push(map[id]);
    } else {
      if (!map[parentId]) {
        throw new Error(`Invalid parentId: ${parentId}`);
      }
      map[parentId].children.push(map[id]);
    }
  });

  // 返回根节点数组，即树形结构。
  return roots;
}
